﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using SaludOcupacional.Controller;
using SaludOcupacional.Model;

namespace SaludOcupacional
{
    /// <summary>
    /// Interaction logic for Usuarios.xaml
    /// </summary>
    public partial class Usuarios : Window
    {
        private string login;
        private Usuario usuario;

        public Usuarios(string theLogin)
        {
            InitializeComponent();
            login = theLogin;
            usuario = LoginManager.GetUserByUserName(login);




            eLogin.Text = usuario.Login;
            ePrivilegio.Text = usuario.Privilegio;
            eNombre.Text = usuario.Nombre;
            ePaterno.Text = usuario.ApellidoPaterno;
            eMaterno.Text = usuario.ApellidoMaterno;

            if (usuario.Telefono == 0)
                eTelefono.Text = "";
            else
            {
                eTelefono.Text = usuario.Telefono.ToString();
            }
            eDireccion.Text = usuario.Direccion;
            eEmail.Text = usuario.Email;
            if (usuario.Celular == 0)
                eCelular.Text = "";
            else
            {
                eCelular.Text = usuario.Celular.ToString();
            }
            eNacimiento.Text = usuario.FechaNacimiento;

        }

        private void button6_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }



        private void xPassword_Click(object sender, RoutedEventArgs e)
        {
            ChangePassword changePassword = new ChangePassword(login);
            changePassword.Show();
        }

        private void xEditar_Click(object sender, RoutedEventArgs e)
        {
            int telefono;
            int celular;
            try
            {
                if(LoginManager.GetUserByUserName(eLogin.Text) == null || eLogin.Text == login)
                {

                    UsuariosManager.ValidarEditarUsuario(eLogin.Text, ePrivilegio.Text, eNombre.Text,
                                                                 ePaterno.Text, eMaterno.Text);
                    if (eTelefono.Text == "")
                        telefono = 0;
                    else
                        telefono = Convert.ToInt32(eTelefono.Text);

                    if (eCelular.Text == "")
                        celular = 0;
                    else
                        celular = Convert.ToInt32(eCelular.Text);

                    Usuario editusuario = new Usuario(usuario.CodUsuario, eLogin.Text, usuario.Password, ePrivilegio.Text, eNombre.Text, ePaterno.Text, eMaterno.Text, telefono, eDireccion.Text, eNacimiento.Text, eEmail.Text, celular, "vigente");
                    UsuariosManager.EditUser(editusuario);
                    MessageBox.Show("CAMBIOS REALIZADOS!!");


                }
                else
                {
                    MessageBox.Show("Error: " + "Login Esta En Uso");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            int telefono;
            int celular;
            try
            {
                if(LoginManager.GetUserByUserName(rLogin.Text) == null)
                {
                    if (rPassword.Password == rePassword.Password)
                    {
                        if(rPrivilegio.Text != "")
                        {
                            UsuariosManager.ValidarNuevoUsuario(rLogin.Text, rPassword.Password, rNombre.Text,
                                                                 rPaterno.Text, rMaterno.Text
                                                                 );
                            if (rTelefono.Text == "")
                                telefono = 0;
                            else
                                telefono = Convert.ToInt32(rTelefono.Text);

                            if (rCelular.Text == "")
                                celular = 0;
                            else
                                celular = Convert.ToInt32(rCelular.Text);

                            Usuario createUsuario = new Usuario(0, rLogin.Text, rPassword.Password, rPrivilegio.Text, rNombre.Text, rPaterno.Text, rMaterno.Text, telefono, rDireccion.Text, rNacimiento.Text, rEmail.Text, celular, "vigente");
                                                 //int codUsuario, string login, string password, int privilegio, string nombre, string apellidoPaterno, string apellidoMaterno, int telefono, string direccion, string fechaNacimiento, string email, int celular
                            UsuariosManager.Createuser(createUsuario);
                            MessageBox.Show("USUARIO CREADO!!");

                            rLogin.Text = "";
                            rPassword.Password = "";
                            rPrivilegio.Text = "";
                            rNombre.Text = "";
                            rPaterno.Text = "";
                            rMaterno.Text = "";
                            rTelefono.Text = "";
                            rDireccion.Text = "";
                            rNacimiento.Text = "";
                            rEmail.Text = "";
                            rCelular.Text = "";
                            rePassword.Password = "";
                        }
                        else
                        {
                            MessageBox.Show("Error: " + "Ingrese Provilegio");
                        }


                    }
                    else
                    {
                        MessageBox.Show("Error: " + "Verifique El Password");
                    }
                    
                }
                else
                {
                    MessageBox.Show("Error: " + "El Login Ya esta En Uso!!");
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }

        private void rBorrar_Click(object sender, RoutedEventArgs e)
        {
            rLogin.Text = "";
            rPassword.Password = "";
            rPrivilegio.Text = "";
            rNombre.Text = "";
            rPaterno.Text = "";
            rMaterno.Text = "";
            rTelefono.Text = ""; 
            rDireccion.Text = "";
            rNacimiento.Text = "";
            rEmail.Text = "";
            rCelular.Text = "";
            rePassword.Password = "";

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            if(LoginManager.GetUserByUserName(eLogin.Text) == null || eLogin.Text == login)
            {
                MessageBox.Show("Login Valido!!");
                eVerificar.Visibility = Visibility.Hidden;
            }
            else
            {
                MessageBox.Show("Error: " + "El Login Ya esta En Uso!!");
            }
        }

        private void eCelular_TextChanged(object sender, TextChangedEventArgs e)
        {
            int number;
            try
            {
                if(eCelular.Text != "")
                {
                    number = Convert.ToInt32(eCelular.Text);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("El Numero de Celular debe Ser Numerico!");
                eCelular.Text = "";
            }
        }

        private void eTelefono_TextChanged(object sender, TextChangedEventArgs e)
        {
            int number;
            try
            {
                if (eTelefono.Text != "")
                {
                    number = Convert.ToInt32(eTelefono.Text);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("El Numero de Telefono debe Ser Numerico!");
                eTelefono.Text = "";
            }
        }

        private void eLogin_TextChanged(object sender, TextChangedEventArgs e)
        {
            if(login != eLogin.Text)
            {
                eVerificar.Visibility = Visibility.Visible;
            }
        }

        private void rCelular_TextChanged(object sender, TextChangedEventArgs e)
        {
            int number;
            try
            {
                if (rCelular.Text != "")
                {
                    number = Convert.ToInt32(rCelular.Text);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("El Numero de Celular debe Ser Numerico!");
                rCelular.Text = "";
            }
        }

        private void rTelefono_TextChanged(object sender, TextChangedEventArgs e)
        {
            int number;
            try
            {
                if (rTelefono.Text != "")
                {
                    number = Convert.ToInt32(rTelefono.Text);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("El Numero de Telefono debe Ser Numerico!");
                rTelefono.Text = "";
            }
        }

        private void rLogin_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (login != rLogin.Text)
            {
                rVerificar.Visibility = Visibility.Visible;
            }
        }

        private void rVerificar_Click(object sender, RoutedEventArgs e)
        {
            if (LoginManager.GetUserByUserName(rLogin.Text) == null || rLogin.Text == login)
            {
                MessageBox.Show("Login Valido!!");
                rVerificar.Visibility = Visibility.Hidden;
            }
            else
            {
                MessageBox.Show("Error: " + "El Login Ya esta En Uso!!");
            }
        }

        private void button1_Click_1(object sender, RoutedEventArgs e)
        {

            if(cNombre.Text == "")
            {
                MessageBox.Show("Ingrese El Nombre!");
            }
            else
            {
                Collection<Usuario> lista = new Collection<Usuario>();
                lista = UsuariosManager.BuscarUsuarioPorNombre(cNombre.Text);

                if (lista.Count > 0)
                {
                    int i = 0;
                    nombre1.Visibility = Visibility.Visible;
                    nombre1.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                    login1.Visibility = Visibility.Visible;
                    login1.Content = lista[i].Login;
                    estado1.Visibility = Visibility.Visible;
                    estado1.Content =  lista[i].Stado;
                    cambiar1.Visibility = Visibility.Visible;
                    i++;

                    if(lista.Count > 1)
                    {
                        nombre2.Visibility = Visibility.Visible;
                        nombre2.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        login2.Visibility = Visibility.Visible;
                        login2.Content = lista[i].Login;
                        estado2.Visibility = Visibility.Visible;
                        estado2.Content =  lista[i].Stado;
                        cambiar2.Visibility = Visibility.Visible;
                    }

                    else
                    {
                        nombre2.Visibility = Visibility.Hidden;
                        login2.Visibility = Visibility.Hidden;
                        estado2.Visibility = Visibility.Hidden;
                        cambiar2.Visibility = Visibility.Hidden;

                        nombre3.Visibility = Visibility.Hidden;
                        login3.Visibility = Visibility.Hidden;
                        estado3.Visibility = Visibility.Hidden;
                        cambiar3.Visibility = Visibility.Hidden;

                        nombre4.Visibility = Visibility.Hidden;
                        login4.Visibility = Visibility.Hidden;
                        estado4.Visibility = Visibility.Hidden;
                        cambiar4.Visibility = Visibility.Hidden;

                        nombre5.Visibility = Visibility.Hidden;
                        login5.Visibility = Visibility.Hidden;
                        estado5.Visibility = Visibility.Hidden;
                        cambiar5.Visibility = Visibility.Hidden;
                        
                    }
                    i++;
                    if (lista.Count > 2)
                    {
                        nombre3.Visibility = Visibility.Visible;
                        nombre3.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        login3.Visibility = Visibility.Visible;
                        login3.Content =  lista[i].Login;
                        estado3.Visibility = Visibility.Visible;
                        estado3.Content =  lista[i].Stado;
                        cambiar3.Visibility = Visibility.Visible;
                    }
                    else
                    {

                        nombre3.Visibility = Visibility.Hidden;
                        login3.Visibility = Visibility.Hidden;
                        estado3.Visibility = Visibility.Hidden;
                        cambiar3.Visibility = Visibility.Hidden;

                        nombre4.Visibility = Visibility.Hidden;
                        login4.Visibility = Visibility.Hidden;
                        estado4.Visibility = Visibility.Hidden;
                        cambiar4.Visibility = Visibility.Hidden;

                        nombre5.Visibility = Visibility.Hidden;
                        login5.Visibility = Visibility.Hidden;
                        estado5.Visibility = Visibility.Hidden;
                        cambiar5.Visibility = Visibility.Hidden;
                    }
                    i++;
                    if (lista.Count > 3)
                    {
                        nombre4.Visibility = Visibility.Visible;
                        nombre4.Content =  lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        login4.Visibility = Visibility.Visible;
                        login4.Content = lista[i].Login;
                        estado4.Visibility = Visibility.Visible;
                        estado4.Content =  lista[i].Stado;
                        cambiar4.Visibility = Visibility.Visible;
                    }
                    else
                    {


                        nombre4.Visibility = Visibility.Hidden;
                        login4.Visibility = Visibility.Hidden;
                        estado4.Visibility = Visibility.Hidden;
                        cambiar4.Visibility = Visibility.Hidden;

                        nombre5.Visibility = Visibility.Hidden;
                        login5.Visibility = Visibility.Hidden;
                        estado5.Visibility = Visibility.Hidden;
                        cambiar5.Visibility = Visibility.Hidden;
                    }
                    i++;
                    if (lista.Count > 4)
                    {
                        nombre5.Visibility = Visibility.Visible;
                        nombre5.Content =  lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        login5.Visibility = Visibility.Visible;
                        login5.Content = lista[i].Login;
                        estado5.Visibility = Visibility.Visible;
                        estado5.Content =  lista[i].Stado;
                        cambiar5.Visibility = Visibility.Visible;
                    }
                    else
                    {

                        nombre5.Visibility = Visibility.Hidden;
                        login5.Visibility = Visibility.Hidden;
                        estado5.Visibility = Visibility.Hidden;
                        cambiar5.Visibility = Visibility.Hidden;
                    }

                }
                else
                {
                    nombre1.Visibility = Visibility.Hidden;
                    login1.Visibility = Visibility.Hidden;
                    estado1.Visibility = Visibility.Hidden;
                    cambiar1.Visibility = Visibility.Hidden;

                    nombre2.Visibility = Visibility.Hidden;
                    login2.Visibility = Visibility.Hidden;
                    estado2.Visibility = Visibility.Hidden;
                    cambiar2.Visibility = Visibility.Hidden;

                    nombre3.Visibility = Visibility.Hidden;
                    login3.Visibility = Visibility.Hidden;
                    estado3.Visibility = Visibility.Hidden;
                    cambiar3.Visibility = Visibility.Hidden;

                    nombre4.Visibility = Visibility.Hidden;
                    login4.Visibility = Visibility.Hidden;
                    estado4.Visibility = Visibility.Hidden;
                    cambiar4.Visibility = Visibility.Hidden;

                    nombre5.Visibility = Visibility.Hidden;
                    login5.Visibility = Visibility.Hidden;
                    estado5.Visibility = Visibility.Hidden;
                    cambiar5.Visibility = Visibility.Hidden;



                    MessageBox.Show("No se encontro Resultados!");
                }
            }
            
        }

        private void cambiar1_Click(object sender, RoutedEventArgs e)
        {
            
            UsuariosManager.CambiarEstadousuario(login1.Content.ToString());
            button1_Click_1(sender,e);
        }

        private void cambiar2_Click(object sender, RoutedEventArgs e)
        {
            UsuariosManager.CambiarEstadousuario(login2.Content.ToString());
            button1_Click_1(sender, e);
        }

        private void cambiar3_Click(object sender, RoutedEventArgs e)
        {
            UsuariosManager.CambiarEstadousuario(login3.Content.ToString());
            button1_Click_1(sender, e);
        }

        private void cambiar4_Click(object sender, RoutedEventArgs e)
        {
            UsuariosManager.CambiarEstadousuario(login4.Content.ToString());
            button1_Click_1(sender, e);
        }

        private void cambiar5_Click(object sender, RoutedEventArgs e)
        {
            UsuariosManager.CambiarEstadousuario(login5.Content.ToString());
            button1_Click_1(sender, e);
        }

        private void button2_Click_1(object sender, RoutedEventArgs e)
        {
            if (vNombre.Text == "")
            {
                MessageBox.Show("Ingrese El Nombre!");
            }
            else
            {
                Collection<Usuario> lista = new Collection<Usuario>();
                lista = UsuariosManager.BuscarUsuarioPorNombre(vNombre.Text);

                if (lista.Count > 0)
                {
                    int i = 0;
                    vNombre1.Visibility = Visibility.Visible;
                    vNombre1.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                    vLogin1.Visibility = Visibility.Visible;
                    vLogin1.Content = lista[i].Login;
                    
                    Ver1.Visibility = Visibility.Visible;
                    i++;

                    if (lista.Count > 1)
                    {
                        vNombre2.Visibility = Visibility.Visible;
                        vNombre2.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        vLogin2.Visibility = Visibility.Visible;
                        vLogin2.Content = lista[i].Login;
                        
                        Ver2.Visibility = Visibility.Visible;
                    }

                    else
                    {
                        vNombre2.Visibility = Visibility.Hidden;
                        vLogin2.Visibility = Visibility.Hidden;
                        
                        Ver2.Visibility = Visibility.Hidden;

                        vNombre3.Visibility = Visibility.Hidden;
                        vLogin3.Visibility = Visibility.Hidden;
                        
                        Ver3.Visibility = Visibility.Hidden;

                        vNombre4.Visibility = Visibility.Hidden;
                        vLogin4.Visibility = Visibility.Hidden;
                        
                        Ver4.Visibility = Visibility.Hidden;

                        vNombre5.Visibility = Visibility.Hidden;
                        vLogin5.Visibility = Visibility.Hidden;
                        
                        Ver5.Visibility = Visibility.Hidden;

                    }
                    i++;
                    if (lista.Count > 2)
                    {
                        vNombre3.Visibility = Visibility.Visible;
                        vNombre3.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        vLogin3.Visibility = Visibility.Visible;
                        vLogin3.Content = lista[i].Login;
                        
                        Ver3.Visibility = Visibility.Visible;
                    }
                    else
                    {

                        vNombre3.Visibility = Visibility.Hidden;
                        vLogin3.Visibility = Visibility.Hidden;
                        
                        Ver3.Visibility = Visibility.Hidden;

                        vNombre4.Visibility = Visibility.Hidden;
                        vLogin4.Visibility = Visibility.Hidden;
                        
                        Ver4.Visibility = Visibility.Hidden;

                        vNombre5.Visibility = Visibility.Hidden;
                        vLogin5.Visibility = Visibility.Hidden;
                        
                        Ver5.Visibility = Visibility.Hidden;
                    }
                    i++;
                    if (lista.Count > 3)
                    {
                        vNombre4.Visibility = Visibility.Visible;
                        vNombre4.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        vLogin4.Visibility = Visibility.Visible;
                        vLogin4.Content = lista[i].Login;
                        
                        Ver4.Visibility = Visibility.Visible;
                    }
                    else
                    {


                         vNombre4.Visibility = Visibility.Hidden;
                        vLogin4.Visibility = Visibility.Hidden;
                        
                        Ver4.Visibility = Visibility.Hidden;

                        vNombre5.Visibility = Visibility.Hidden;
                        vLogin5.Visibility = Visibility.Hidden;
                        
                        Ver5.Visibility = Visibility.Hidden;
                    }
                    i++;
                    if (lista.Count > 4)
                    {
                        vNombre5.Visibility = Visibility.Visible;
                        vNombre5.Content = lista[i].Nombre + " " + lista[i].ApellidoPaterno + " " + lista[i].ApellidoMaterno;
                        vLogin5.Visibility = Visibility.Visible;
                        vLogin5.Content = lista[i].Login;
                        
                        Ver5.Visibility = Visibility.Visible;
                    }
                    else
                    {

                        vNombre5.Visibility = Visibility.Hidden;
                        vLogin5.Visibility = Visibility.Hidden;
                        
                        Ver5.Visibility = Visibility.Hidden;
                    }

                }
                else
                {
                        vNombre1.Visibility = Visibility.Hidden;
                        vLogin1.Visibility = Visibility.Hidden;
                        
                        Ver1.Visibility = Visibility.Hidden;

                        vNombre2.Visibility = Visibility.Hidden;
                        vLogin2.Visibility = Visibility.Hidden;
                        
                        Ver2.Visibility = Visibility.Hidden;

                        vNombre3.Visibility = Visibility.Hidden;
                        vLogin3.Visibility = Visibility.Hidden;
                        
                        Ver3.Visibility = Visibility.Hidden;

                        vNombre4.Visibility = Visibility.Hidden;
                        vLogin4.Visibility = Visibility.Hidden;
                        
                        Ver4.Visibility = Visibility.Hidden;

                        vNombre5.Visibility = Visibility.Hidden;
                        vLogin5.Visibility = Visibility.Hidden;
                        
                        Ver5.Visibility = Visibility.Hidden;



                    MessageBox.Show("No se encontro Resultados!");
                }
            }
        }

        private void Ver1_Click(object sender, RoutedEventArgs e)
        {
            VerUsuario ver = new VerUsuario(vLogin1.Content.ToString());
            ver.Show();
        }

        private void Ver2_Click(object sender, RoutedEventArgs e)
        {
            VerUsuario ver = new VerUsuario(vLogin2.Content.ToString());
            ver.Show();
        }

        private void Ver3_Click(object sender, RoutedEventArgs e)
        {
            VerUsuario ver = new VerUsuario(vLogin3.Content.ToString());
            ver.Show();
        }

        private void Ver4_Click(object sender, RoutedEventArgs e)
        {
            VerUsuario ver = new VerUsuario(vLogin4.Content.ToString());
            ver.Show();
        }

        private void Ver5_Click(object sender, RoutedEventArgs e)
        {
            VerUsuario ver = new VerUsuario(vLogin5.Content.ToString());
            ver.Show();
        }

    }
}
